package com.htjc.integral.interaction.inner.util;

import javax.xml.namespace.QName;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

import lombok.extern.slf4j.Slf4j;


/**
 * @ClassName:CxfClient
 * @Description:webservice客户端：
 * 			       该类提供两种不同的方式来调用webservice服务
 * 				1：代理工厂方式
 * 				2：动态调用webservice
 * @author Maple
 * @date:2018年4月10日下午4:14:07
 */
@Slf4j(topic="innerLogger")
public class CxfClient {
	
	public static Object[] cxfFun(String req,String endpoint,String targetNamespace,String method) {
		log.info("\n\n\n "+CxfClient.class.getName()+"方法名：cxfFun()渠道端内网应用积分e+内网服务接口=====start=====");

		// 创建动态客户端
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		log.info("=====设置service所在URL=====endpoint:"+endpoint);
		Client client = dcf.createClient(endpoint);
		
		// 需要密码的情况需要加上用户名和密码
//		 client.getOutInterceptors().add(new ClientLoginInterceptor("DZJF", "zpepc001"));
		Object[] objects = new Object[10000];
		try {
			// invoke("方法名",参数1,参数2,参数3....);
			log.info("=====设置service所在URL=====targetNamespace:"+targetNamespace+"=====method:"+method);
			objects = client.invoke(new QName(targetNamespace,method),req);
			log.info("返回值:"+objects[0]);

			System.out.println("返回数据:" + objects[0]);
		} catch (java.lang.Exception e) {
			e.printStackTrace();
		}
		log.info("\n\n\n "+CxfClient.class.getName()+"方法名：cxfFun()渠道端内网应用积分e+内网服务接口=====end=====");
		return objects;
	}
}
